diff options
Diffstat (limited to 'app/[lng]/evcp')
| -rw-r--r-- | app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx | 3 | ||||
| -rw-r--r-- | app/[lng]/evcp/(evcp)/(procurement)/pq_new/[vendorId]/[submissionId]/page.tsx | 56 |
2 files changed, 53 insertions, 6 deletions
diff --git a/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx b/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx index dfbd605b..5826b8d8 100644 --- a/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx +++ b/app/[lng]/evcp/(evcp)/(master-data)/buyer-signature/page.tsx @@ -8,6 +8,7 @@ export default async function BuyerSignaturePage(props: { params: Promise<{ lng: const { t } = await useTranslation(lng, 'menu') const signatures = await getAllSignatures(); + const activeSignature = signatures.find((signature) => signature.isActive); return ( <div className="container mx-auto py-8 max-w-4xl"> @@ -19,7 +20,7 @@ export default async function BuyerSignaturePage(props: { params: Promise<{ lng: </p> </div> - <BuyerSignatureUploadForm /> + <BuyerSignatureUploadForm initialSignature={activeSignature} /> <SignatureList signatures={signatures} /> </div> diff --git a/app/[lng]/evcp/(evcp)/(procurement)/pq_new/[vendorId]/[submissionId]/page.tsx b/app/[lng]/evcp/(evcp)/(procurement)/pq_new/[vendorId]/[submissionId]/page.tsx index 93302f87..5baf6efb 100644 --- a/app/[lng]/evcp/(evcp)/(procurement)/pq_new/[vendorId]/[submissionId]/page.tsx +++ b/app/[lng]/evcp/(evcp)/(procurement)/pq_new/[vendorId]/[submissionId]/page.tsx @@ -54,7 +54,11 @@ export default async function PQReviewPage(props: PQReviewPageProps) { const pqSubmission = await getPQById(submissionId, vendorId)
// PQ 데이터 조회 (질문과 답변)
- const pqData = await getPQDataByVendorId(vendorId, pqSubmission.projectId || undefined)
+ const pqData = await getPQDataByVendorId(
+ vendorId,
+ pqSubmission.projectId || undefined,
+ pqSubmission.type as "GENERAL" | "PROJECT" | "NON_INSPECTION"
+ )
// 협력업체 정보 (pqSubmission에 이미 포함되어 있음)
const vendorInfo = {
@@ -64,7 +68,6 @@ export default async function PQReviewPage(props: PQReviewPageProps) { vendorCountry: pqSubmission.vendorCountry,
vendorEmail: pqSubmission.vendorEmail,
vendorPhone: pqSubmission.vendorPhone,
- vendorFax: pqSubmission.vendorFax,
}
// 프로젝트 정보 (프로젝트 PQ인 경우)
@@ -114,7 +117,30 @@ export default async function PQReviewPage(props: PQReviewPageProps) { <Alert>
<AlertTitle>제출 완료</AlertTitle>
<AlertDescription>
- 협력업체가 {formatDate(pqSubmission.submittedAt, "kr")}에 PQ를 제출했습니다. 검토 후 승인 또는 거부할 수 있습니다.
+ 협력업체가 {pqSubmission.submittedAt ? formatDate(pqSubmission.submittedAt) : "N/A"}에 PQ를 제출했습니다. 검토 후 승인 또는 거부할 수 있습니다.
+ </AlertDescription>
+ </Alert>
+ )}
+
+ {pqSubmission.status === "SAFETY_APPROVED" && (
+ <Alert variant="success">
+ <AlertTitle>안전 검토 승인됨</AlertTitle>
+ <AlertDescription>
+ 안전팀 검토가 완료되었습니다. 구매 승인 단계를 진행해주세요.
+ </AlertDescription>
+ </Alert>
+ )}
+
+ {pqSubmission.status === "SAFETY_REJECTED" && (
+ <Alert variant="destructive">
+ <AlertTitle>안전 검토 거절됨</AlertTitle>
+ <AlertDescription>
+ 안전팀에서 PQ를 거절했습니다.
+ {pqSubmission.rejectReason && (
+ <div className="mt-2">
+ <strong>사유:</strong> {pqSubmission.rejectReason}
+ </div>
+ )}
</AlertDescription>
</Alert>
)}
@@ -123,7 +149,7 @@ export default async function PQReviewPage(props: PQReviewPageProps) { <Alert variant="success">
<AlertTitle>승인됨</AlertTitle>
<AlertDescription>
- {formatDate(pqSubmission.approvedAt, "kr")}에 승인되었습니다.
+ {pqSubmission.approvedAt ? formatDate(pqSubmission.approvedAt) : "N/A"}에 승인되었습니다.
</AlertDescription>
</Alert>
)}
@@ -132,7 +158,7 @@ export default async function PQReviewPage(props: PQReviewPageProps) { <Alert variant="destructive">
<AlertTitle>거부됨</AlertTitle>
<AlertDescription>
- {formatDate(pqSubmission.rejectedAt, "kr")}에 거부되었습니다.
+ {pqSubmission.rejectedAt ? formatDate(pqSubmission.rejectedAt) : "N/A"}에 거부되었습니다.
{pqSubmission.rejectReason && (
<div className="mt-2">
<strong>사유:</strong> {pqSubmission.rejectReason}
@@ -213,10 +239,20 @@ function getStatusLabel(status: string): string { return "진행 중";
case "SUBMITTED":
return "제출됨";
+ case "SAFETY_APPROVED":
+ return "안전 승인됨";
+ case "SAFETY_REJECTED":
+ return "안전 거절됨";
case "APPROVED":
return "승인됨";
case "REJECTED":
return "거부됨";
+ case "QM_REVIEWING":
+ return "QM 검토중";
+ case "QM_APPROVED":
+ return "QM 승인됨";
+ case "QM_REJECTED":
+ return "QM 거절됨";
default:
return status;
}
@@ -231,10 +267,20 @@ function getStatusVariant(status: string): "default" | "outline" | "secondary" | return "secondary";
case "SUBMITTED":
return "default";
+ case "SAFETY_APPROVED":
+ return "secondary";
+ case "SAFETY_REJECTED":
+ return "destructive";
case "APPROVED":
return "success";
case "REJECTED":
return "destructive";
+ case "QM_REVIEWING":
+ return "secondary";
+ case "QM_APPROVED":
+ return "default";
+ case "QM_REJECTED":
+ return "destructive";
default:
return "outline";
}
|
